package com.plx.config;

import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.StringRedisSerializer;

@Configuration //配置类注解
//面试题：@Configuration和@Component的区别：
//1. @Configuration是配置类注解，@Component是组件注解
//2. @Configuration注解是@Component的父级注解，它包含了@Componet注解
//3. @Configuration，不仅可以设置当前类创建的对象加入spring容器当中，还可以支持@Bean注解，将其他方法返回值加到Spring容器当中
//4. @Component不支持@Bean注解

@Slf4j //日志注解
public class RedisConfiguration {
    @Bean //将redisTemplate（方法）返回值放入spring容器
    //在这个配置类中，方法名只能是RedisTemplate
    public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){
        RedisTemplate redisTemplate = new RedisTemplate();
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setConnectionFactory(redisConnectionFactory);
        return redisTemplate;
    }
}
